package com.thirteen.app.service.impl;

import com.thirteen.app.daoTest.CourseDao;
import com.thirteen.app.dto.CreateExamBySearchResponse.PaperCourseSearchDto;
import com.thirteen.app.dto.CreateExamResponse.PaperCourseExamDto;
import com.thirteen.app.entity.Course;
import com.thirteen.app.service.CourseService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service("courseService")
public class CourseServiceImpl implements CourseService {

    @Resource
    private CourseDao courseDao;

    @Override
    public List<PaperCourseSearchDto> queryAllCourse(String courseName, Integer offset, Integer limit) {
        return courseDao.queryAllCourse(courseName, offset, limit);
    }

    //    查出该学院下所有课程
    @Override
    public List<PaperCourseExamDto> queryAllCourseByCollegeId(Integer collegeId) {
        return courseDao.queryAllCourseBycollegeId(collegeId);
    }

    @Override
    public List<PaperCourseExamDto> queryAllCourseAndPaper() {
        return courseDao.queryAllCourseAndPaper();
    }

//    zql&ar

    /**
     * 通过ID查询单条数据
     *
     * @param courseid 主键
     * @return 实例对象
     */
    @Override
    public Course queryById(Integer courseid) {
        return this.courseDao.queryById(courseid);
    }

    /**
     * 查询多条数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    @Override
    public List<Course> queryAllByLimit(int offset, int limit, String subject, String academy) {
        return this.courseDao.queryAllByLimit(offset * (offset - 1), limit, subject, academy);
    }

    /**
     * 新增数据
     * <p>
     * param course 实例对象
     *
     * @return 实例对象
     */
    @Override
    public boolean insert(Course course) {
        return this.courseDao.insert(course) > 0;
    }

    @Override
    public List<Course> listAll() {
        return courseDao.listAll();
    }

    /**
     * 修改数据
     * <p>
     * param course 实例对象
     *
     * @return 实例对象
     */
    @Override
    public boolean update(Course course) {
        return this.courseDao.update(course) > 0;
    }

    @Override
    public int getCourseCount(String subject, String academy) {
        return courseDao.getCourseCount(subject, academy);
    }

    /**
     * 通过主键删除数据
     *
     * @param courseid 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Integer courseid) {
        return this.courseDao.deleteById(courseid) > 0;
    }

}
